using UnityEngine;

/// <summary>
/// 基于MonoBehaviour的单例对象
/// </summary>
/// <typeparam name="T"></typeparam>
public class SingletonMono<T> : MonoBehaviour where T : MonoBehaviour
{
    private static T instance;
    public static T GetInstance()
    {
        if (instance == null)
        {
            //场景上增加一个空物体并挂载脚本
            GameObject obj = new GameObject();
            //确保单例模式对象 过场景不移除
            DontDestroyOnLoad(obj);
            //设置对象的名称为脚本名
            obj.name = typeof(T).ToString();
            instance = obj.AddComponent<T>();
        }
        return instance;
    }
}


// //使用
// public class NewBehaviourScript : SingletonMono<NewBehaviourScript>
// {
// }